package com.fjwt.gz.db.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fjwt.gz.db.dto.BlacklistExtraFieldDTO;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * <p>
 * 黑名单规则表
 * </p>
 */
@Data
@Accessors(chain = true)
public class BlacklistRuleVO implements Serializable {

    /**
     * 主键
     */
    @TableId(value = "blacklist_rule_id", type = IdType.AUTO)
    private Long blacklistRuleId;

    /**
     * 黑名单规则名称（最多16个字符）
     */
    private String ruleName;

    /**
     * 规则类型 0：客户经理 1 其他
     */
    private Integer ruleType;

    /**
     * 触发黑名单提示语（最多32个字符）
     */
    private String ruleTip;

    /**
     * 机构ID
     */
    private String agentNo;

    /**
     * 一级机构号
     */
    private String agentNo1;

    /**
     * 二级机构号
     */
    private String agentNo2;

    /**
     * 三级机构号
     */
    private String agentNo3;

    /**
     * 四级机构号  如果机构号为空则写 0
     */
    private String agentNo4;

    /**
     * 是否强制配置  0否 1是，默认0
     */
    private String isForceConfig;

    /**
     * 校验字段，例如：phone/cstmNo
     */
    private String checkField;

    /**
     * 额外的字段1，例如：{'name':'字段1', isMust: true/false }
     */
    private String extraField1;

    /**
     * 额外的字段2
     */
    private String extraField2;

    /**
     * 额外的字段3
     */
    private String extraField3;

    /**
     * 额外的字段4
     */
    private String extraField4;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdAt;

    /**
     * 创建者id
     */
    private Long createdUid;

    /**
     * 更新建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updatedAt;

    /**
     * 机构名称
     */
    private String agentName;

    /**
     * 额外字段
     */
    private List<BlacklistExtraFieldDTO> extraFieldList;

    /**
     * 动态表头
     */
    private List<DynamicHeaderVO> columnNameList;

    /**
     * 是否配置活动状态 0：未配置 1：已配置
     */
    private Integer activityState;

    /**
     * 绑定的活动列表
     */
    private List<ActivityVO> activityList;

    /**
     * 绑定的活动名称
     */
    private String activityNames;

    /**
     * 绑定的活动数量
     */
    private Integer activityCount;
}
